// 用户信息
import { reqLogin } from '@/api/user'
import { getToken, setToken } from '@/utils/auth'
const state = {
  token: getToken
}
const mutations = {
  setToken(state, newToken) {
    state.token = newToken
  }
}
// 异步操作放在 actions 中
// 因为不能确保一定登录成功，那就分登录成功和失败两种情况。如果登录成功，就存token、跳转页面，如果登录失败，就给用户提示。
// 因为这个请求是异步的，所以要放在promise中才便于处理
const actions = {
  // 登录的action，actions的第二个参数是异步操作的参数
  login(context, data) {
    return new Promise((resolve, reject) => {
      // 发送登录请求，异步操作
      reqLogin(data).then(res => {
        // 提交mutation存储token
        context.commit('setToken', res.data)
        // 存储token在cookie中
        setToken(res.data.data)
        // 成功resolve
        resolve(res)
      }).catch(err => {
        // 失败reject
        reject(err)
      })
    })
  }
}
export default {
  namespaced: true,
  state,
  mutations,
  actions
}

